package br.edu.ufcg.p1.barzin.util;

public class SQLUtils {

	/*
	 * CREATE TABLES
	 */

	public static final String CREATE_TABLE_PESSOAS = "CREATE TABLE Pessoas ("
			+ "id  INTEGER PRIMARY KEY AUTOINCREMENT, "
			+ "nome TEXT NOT NULL UNIQUE,"
			+ "valor NUMERIC DEFAULT '0');";

	public static final String CREATE_TABLE_PEDIDOS_PESSOAS = "CREATE TABLE PedidosPessoas ("
			+ "id  INTEGER PRIMARY KEY AUTOINCREMENT, "
			+ "pedido_id INTEGER NOT NULL,"
			+ "pessoa_id INTEGER NOT NULL,"
			+ "valor NUMERIC DEFAULT '0');";

	public static final String CREATE_TABLE_CATEGORIAS = "CREATE TABLE Categorias ( "
			+ "id                  INTEGER	PRIMARY KEY, "
			+ "categoria_mae_id    INTEGER	UNSIGNED, "
			+ "nome                TEXT   	NOT NULL);";

	public static final String CREATE_TABLE_ITENS = "CREATE TABLE Itens ("
			+ "id              INTEGER  PRIMARY KEY,"
			+ "categoria_id    INTEGER	UNSIGNED NOT NULL,"
			+ "nome            TEXT    NOT NULL,"
			+ "descricao       TEXT    NOT NULL,"
			+ "foto            BLOB,"
			+ "preco           FLOAT   NOT NULL,"
			+ "disponivel		INTEGER NOT NULL,"
			+ "precisa_preparo	INTEGER NOT NULL,"
			+ "thumb 			BLOB);";

	public static final String CREATE_TABLE_PEDIDOS = "CREATE TABLE Pedidos ("
			+ "id          INTEGER		PRIMARY KEY,"
			+ "item_id     INTEGER     	UNSIGNED NOT NULL,"
			+ "quantidade  INTEGER     NOT NULL,"
			+ "estado      TEXT        NOT NULL,"
			+ "hora_formatado   TEXT  	 NOT NULL);";

	public static final String CREATE_TABLE_MENSAGEM = "CREATE TABLE Mensagens ("
			+ "id 			 	INTEGER 	PRIMARY KEY,"
			+ "remetente_id 	INTEGER 	NOT NULL,"
			+ "destinatario_id  INTEGER 	NOT NULL,"
			+ "remetente_nome 	TEXT 		NOT NULL,"
			+ "mensagem 		TEXT 		NOT NULL,"
			+ "hora_formatado 	TEXT	 	NOT NULL);";

	public static final String CREATE_TABLE_PROPAGANDAS = "CREATE TABLE Propaganda (" +
			"id  	INTEGER 	PRIMARY KEY  AUTOINCREMENT," +
			"foto	BLOB 		NOT NULL" +
			");";
	
	/*
	 * DROP TABLES
	 */

	public static final String DROP_TABLE_PESSOAS = "DROP TABLE IF EXISTS Pessoas";

	public static final String DROP_TABLE_PEDIDO_PESSOAS = "DROP TABLE IF EXISTS PedidosPessoas";

	public static final String DROP_TABLE_CATEGORIAS = "DROP TABLE IF EXISTS Categorias";

	public static final String DROP_TABLE_ITENS = "DROP TABLE IF EXISTS Itens";

	public static final String DROP_TABLE_PEDIDOS = "DROP TABLE IF EXISTS Pedidos";
	
	public static final String DROP_TABLE_MENSAGEM = "DROP TABLE IF EXISTS Mensagens";
	
	public static final String DROP_TABLE_PROPAGANDA = "DROP TABLE IF EXISTS Propaganda";
	

	/*
	 * DELETE
	 */

	public static final String DELETE_PESSOAS_PEDIDO = "DELETE FROM PedidosPessoas WHERE pedido_id=?";

	/*
	 * SELECTS
	 */

	public static final String SELECT_PESSOA_POR_ID = "SELECT pessoa.id AS id, pessoa.nome AS nome, SUM(pedidos.valor) AS valor "
			+ "FROM Pessoas pessoa, PedidosPessoas pedidos "
			+ "WHERE pessoa.id=? AND pedidos.pessoa_id=?";

	public static final String SELECT_VALOR_PESSOA_POR_ID = "SELECT SUM(pp.valor) AS valor "
			+ "FROM PedidosPessoas pp, Pedidos p WHERE p.id=pp.pedido_id AND p.estado='Atendido' AND pp.pessoa_id=?";

	public static final String SELECT_VALOR_CONTA = "SELECT SUM(pp.valor) AS valor "
			+ "FROM PedidosPessoas pp, Pedidos p WHERE p.id=pp.pedido_id AND p.estado='Atendido'";

	public static final String SELECT_TODAS_PESSOAS = "SELECT * FROM Pessoas ORDER BY nome";
	
	public static final String SELECT_TODAS_PROPAGANDAS = "SELECT * FROM Propaganda";

	public static final String SELECT_PESSOAS_PEDIDO = "SELECT p.* FROM Pessoas p, PedidosPessoas pp WHERE p.id=pp.pessoa_id AND pp.pedido_id=?";

	public static final String SELECT_IDS_CATEGORIAS_PRINCIPAIS = "SELECT c.* "
			+ "FROM categorias c WHERE c.categoria_mae_id IS NULL "
			+ "ORDER BY c.nome";

	public static final String SELECT_CATEGORIA_POR_ID = "SELECT c.* FROM Categorias c WHERE c.id=?";

	public static final String SELECT_SUBCATEGORIAS_POR_ID = "SELECT c.* FROM categorias c WHERE c.categoria_mae_id=? ORDER BY c.nome ASC";

	public static final String SELECT_ITENS_POR_ID_CATEGORIA = "SELECT i.* FROM itens i WHERE i.categoria_id=? ORDER BY i.nome ASC";

	public static final String SELECT_ITENS_PEDIDOS = "SELECT DISTINCT item_id FROM pedidos ORDER BY estado DESC, hora_formatado DESC";

	public static final String SELECT_PEDIDOS_PENDENTES = "SELECT p.* FROM pedidos p WHERE p.item_id=? AND p.estado='Pendente' ORDER BY p.hora_formatado DESC";

	public static final String SELECT_PEDIDOS = "SELECT p.* FROM pedidos p WHERE p.item_id=? ORDER BY p.hora_formatadoa_hora DESC";

	public static final String SELECT_PEDIDOS_ATENDIDOS = "SELECT p.* FROM pedidos p WHERE p.item_id=? AND p.estado='Atendido' ORDER BY p.hora_formatado DESC";

	public static final String SELECT_ITEM_POR_ID = "SELECT i.* FROM itens i WHERE i.id=?";
	
	public static final String SELECT_MENSAGENS = "SELECT m.* FROM Mensagens m WHERE m.remetente_id=? AND m.destinatario_id=?";
	
}
